package com.hzncc.flowable_diboot.contract.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.diboot.core.binding.query.BindQuery;
import com.diboot.core.binding.query.Comparison;
import com.diboot.core.entity.BaseModel;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import jakarta.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
* 合同扩展信息 Entity 定义
* @author MyName
* @version 1.0
* @date 2024-08-26
* Copyright © MyCorp
*/

@TableName("mdl_contract_ext")
@Getter @Setter @Accessors(chain = true)
public class ContractExt extends BaseModel {
    private static final long serialVersionUID = 1243302505898543787L;

    /**
     * 租户
     */
    @NotNull(message = "租户不能为空")
    @TableField()
    private String tenantId;

    /**
     * 合同审批ID
     */
    @NotNull(message = "合同审批ID不能为空")
    @Length(max=32, message="合同审批ID长度应小于32")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String contractAuditId;

    /**
     * 合同编码
     */
    @NotNull(message = "合同编码不能为空")
    @Length(max=100, message="合同编码长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String contractCode;

    /**
     * 合同版本
     */
    @NotNull(message = "合同版本不能为空")
    @TableField()
    private Long contractVersion;

    /**
     * 交货时间
     */
    @NotNull(message = "交货时间不能为空")
    @TableField()
    private String deliveryTime;

    /**
     * 交货天数
     */
    @NotNull(message = "交货天数不能为空")
    @TableField()
    private String deliveryDays;

    /**
     * 保修月数
     */
    @NotNull(message = "保修月数不能为空")
    @TableField()
    private Long warrantyMonths;

    /**
     * 其他保修月数
     */
    @Length(max=100, message="其他保修月数长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String otherWarrantyMonths;

    /**
     * 交货地点
     */
    @NotNull(message = "交货地点不能为空")
    @Length(max=100, message="交货地点长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String deliveryAddress;

    /**
     * 收货人姓名
     */
    @NotNull(message = "收货人姓名不能为空")
    @Length(max=100, message="收货人姓名长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String consigneeName;

    /**
     * 收货人电话
     */
    @NotNull(message = "收货人电话不能为空")
    @Length(max=100, message="收货人电话长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String consigneePhone;

    /**
     * 验收标准
     */
    @NotNull(message = "验收标准不能为空")
    @Length(max=100, message="验收标准长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String acceptanceCriteria;

    /**
     * 结算方式
     */
    @NotNull(message = "结算方式不能为空")
    @Length(max=100, message="结算方式长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String settlement;

    /**
     * 发票类型
     */
    @NotNull(message = "发票类型不能为空")
    @Length(max=100, message="发票类型长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String invoiceType;

    /**
     * 违约责任1
     */
    @NotNull(message = "违约责任1不能为空")
    @Length(max=100, message="违约责任1长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String defaultResponsibility1;

    /**
     * 违约责任2
     */
    @NotNull(message = "违约责任2不能为空")
    @Length(max=100, message="违约责任2长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String defaultResponsibility2;

    /**
     * 违约责任3
     */
    @NotNull(message = "违约责任3不能为空")
    @Length(max=100, message="违约责任3长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String defaultResponsibility3;

    /**
     * 违约责任4
     */
    @NotNull(message = "违约责任4不能为空")
    @Length(max=100, message="违约责任4长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String defaultResponsibility4;

    /**
     * 法院所在地
     */
    @NotNull(message = "法院所在地不能为空")
    @Length(max=100, message="法院所在地长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String courtAddress;

    /**
     * 需方
     */
    @NotNull(message = "需方不能为空")
    @Length(max=100, message="需方长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerName;

    /**
     * 需方地址
     */
    @NotNull(message = "需方地址不能为空")
    @Length(max=100, message="需方地址长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerAddress;

    /**
     * 需方法定代表人
     */
    @NotNull(message = "需方法定代表人不能为空")
    @Length(max=100, message="需方法定代表人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerLegal;

    /**
     * 需方委托代理人
     */
    @NotNull(message = "需方委托代理人不能为空")
    @Length(max=100, message="需方委托代理人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerAgent;

    /**
     * 需方电话
     */
    @NotNull(message = "需方电话不能为空")
    @Length(max=100, message="需方电话长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerPhone;

    /**
     * 需方传真
     */
    @NotNull(message = "需方传真不能为空")
    @Length(max=100, message="需方传真长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerFax;

    /**
     * 需方开户行
     */
    @NotNull(message = "需方开户行不能为空")
    @Length(max=100, message="需方开户行长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerBank;

    /**
     * 需方账号
     */
    @NotNull(message = "需方账号不能为空")
    @Length(max=100, message="需方账号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerBankNum;

    /**
     * 需方税号
     */
    @NotNull(message = "需方税号不能为空")
    @Length(max=100, message="需方税号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String buyerTaxNum;

    /**
     * 需方签订时间
     */
    @NotNull(message = "需方签订时间不能为空")
    @TableField()
    private LocalDateTime buyerSignTime;

    /**
     * 供方
     */
    @NotNull(message = "供方不能为空")
    @Length(max=100, message="供方长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierName;

    /**
     * 供方地址
     */
    @NotNull(message = "供方地址不能为空")
    @Length(max=100, message="供方地址长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierAddress;

    /**
     * 供方法定代表人
     */
    @NotNull(message = "供方法定代表人不能为空")
    @Length(max=100, message="供方法定代表人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierLegal;

    /**
     * 供方委托代理人
     */
    @NotNull(message = "供方委托代理人不能为空")
    @Length(max=100, message="供方委托代理人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierAgent;

    /**
     * 供方电话
     */
    @NotNull(message = "供方电话不能为空")
    @Length(max=100, message="供方电话长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierPhone;

    /**
     * 供方传真
     */
    @NotNull(message = "供方传真不能为空")
    @Length(max=100, message="供方传真长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierFax;

    /**
     * 供方开户行
     */
    @NotNull(message = "供方开户行不能为空")
    @Length(max=100, message="供方开户行长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierBank;

    /**
     * 供方账号
     */
    @NotNull(message = "供方账号不能为空")
    @Length(max=100, message="供方账号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierBankNum;

    /**
     * 供方税号
     */
    @NotNull(message = "供方税号不能为空")
    @Length(max=100, message="供方税号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String supplierTaxNum;

    /**
     * 供方签订时间
     */
    @NotNull(message = "供方签订时间不能为空")
    @TableField()
    private LocalDateTime supplierSignTime;

    /**
     * 全款合同状态
     */
    @TableField()
    private String fullPayStatus;

    /**
     * 全款付款期限
     */
    @TableField()
    private String fullPayDeadline;

    /**
     * 二次付款合同状态
     */
    @TableField()
    private String secondPayStatus;

    /**
     * 二次货款期限
     */
    @Length(max=100, message="二次货款期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String secondFirstPayDeadline;

    /**
     * 二次货款金额
     */
    @Length(max=100, message="二次货款金额长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String secondFirstAmount;

    /**
     * 二次尾款期限
     */
    @Length(max=100, message="二次尾款期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String secondLastPayDeadline;

    /**
     * 二次尾款金额
     */
    @Length(max=100, message="二次尾款金额长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String secondLastAmount;

    /**
     * 三次付款合同状态
     */
    @TableField()
    private String thirdPayStatus;

    /**
     * 三次首次付款期限
     */
    @Length(max=100, message="三次首次付款期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String thirdPayFirstDeadline;

    /**
     * 三次首次付款金额
     */
    @Length(max=100, message="三次首次付款金额长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String thirdPayFirstAmount;

    /**
     * 三次二次付款条件
     */
    @Length(max=100, message="三次二次付款条件长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String thirdPaySecondCondition;

    /**
     * 三次付款二次付款期限
     */
    @Length(max=100, message="三次付款二次付款期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String thirdPaySecondDeadline;

    /**
     * 三次付款二次付款金额
     */
    @Length(max=100, message="三次付款二次付款金额长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String thirdPaySecondAmount;

    /**
     * 三次付款尾款金额
     */
    @Length(max=100, message="三次付款尾款金额长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String thirdPayLastAmount;

    /**
     * 三次付款尾款期限
     */
    @Length(max=100, message="三次付款尾款期限长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String thirdPayLastDeadline;

    /**
     * 交付协议
     */
    @TableField
    private String deliveryAgreement;


}